package com.example.pearl.business.controller;

import cn.dev33.satoken.stp.StpUtil;
import com.example.pearl.business.service.UserService;
import com.example.pearl.common.dto.LoginDto;
import com.example.pearl.common.dto.Result;
import com.example.pearl.common.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
public class AuthController {
    
    @Autowired
    private UserService userService;
    
    /**
     * 登录接口
     * @param loginDto 登录参数
     * @return 登录结果
     */
    @PostMapping("/doLogin")
    public Result<String> doLogin(@RequestBody LoginDto loginDto) {
        // 根据用户名查找用户
        User user = userService.findByUsername(loginDto.getUsername());
        
        // 验证用户是否存在
        if (user == null) {
            return Result.error("用户不存在");
        }
        
        // 验证密码是否正确
        if (!userService.verifyPassword(user, loginDto.getPassword())) {
            return Result.error("密码错误");
        }
        
        // 登录成功，将用户ID存入Session
        StpUtil.login(user.getId());
        
        return Result.success("登录成功");
    }
    
    /**
     * 登出接口
     * @return 登出结果
     */
    @PostMapping("/logout")
    public Result<String> logout() {
        StpUtil.logout();
        return Result.success("登出成功");
    }
    
    /**
     * 获取当前登录用户信息
     * @return 用户信息
     */
    @GetMapping("/userInfo")
    public Result<Object> userInfo() {
        if (!StpUtil.isLogin()) {
            return Result.error("用户未登录");
        }
        
        Object loginId = StpUtil.getLoginId();
        return Result.success(loginId);
    }
}